#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "CANCard/GC/canset.h"
#include <QtCharts>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public:
    void Interface_Init();      //界面配置初始化
    void Equ_runinfo_init();    //设备运行数据初始化
    void Hid_fault_Init();
    void Charts_Init();

private slots:
    void Data_Refresh();            //数据刷新函数
    void Protect_fun();             //保护函数
    void HidFault_Scan();           //故障扫描
    void Charts_Show();             //图表界面刷新
    void Interface_Refresh();       //界面刷新函数
    void Fault_show();              //故障显示
    void EQRun_loglist();           //运行日志
    void save_data();               //数据储存
    void Auto_Runlog_info();        //关键信息自动记录
    void ADD_Savedata_Titlebar();   //储存数据追加标题
    void ADD_Savedata_Line();       //储存数据追加数据内

    void on_actionCAN_triggered();
    void runinfo();

    void on_pushButton_clicked();

    void on_pushButton_SaveData_clicked();

    void on_pushButton_SaveData_set_clicked();

    int randomSignedDouble(int min , int max);
signals:
    void Displayrefresh_signal(int);

private:
    Ui::MainWindow *ui;
    QChart *chart;
    CANset *canset=nullptr;
    QTimer *Interface_Rtimer;
    quint16 Interface_rt;
    QStringListModel *FaultListModel;
    QStringList FaultList; //故障列表
    float BMS_data[18];
    float V_max[18];
    float V_min[18];
    QBarSet *set0 = new QBarSet("电压:mv");
    QBarSet *set_max = new QBarSet("Max");
    QBarSet *set_min = new QBarSet("Min");
    QBarCategoryAxis *axisX;
    QValueAxis *axisY;
    QStackedBarSeries *series = new QStackedBarSeries;
    float Box_V_max,Box_V_min;
    int Box_V_max_Num,Box_V_min_Num;
    float axisY_val_max,axisY_val_min;
    QStandardItemModel CVM_main_info;
    QString fileName;   //运行数据储存文档
    bool Save_Data;  //储存数据控制位
    quint8 git_new_titlebar;  //控制数据标题写入
};
#endif // MAINWINDOW_H
